package object05;

/*
  所有的类都继承object
  由于equals方法比较两个对象的地址值没有任何意义
  因此我们通过比较两个对象的属性值
  如果两个对象的属性值完全相同，那么equals方法返回true
  如果两个对象中至少有一个属性不同，equals返回false
  例如：
     Person  如果两个Person对象的姓名和年龄均相同，那么equals返回true
             如果两个Person对象中至少有一个属性不同，equals返回false
 */
public class Person /* extends Object */ {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }


    @Override
    public boolean equals(Object obj) {//Object obj=a=new Animal();
        //多态
        if (this == obj) {//this=p2;
                          //obj=p2;
                          //p2==p2 true
                          //直接return true，如果是同一个人，就不比较，直接返回true
                          //提高代码效率
            return true;
        }

        if (!(obj instanceof Person)) {//如果obj引用指向的对象不是Person类对象
                                       //直接  return false;
            return false;
        }
        Person p = (Person) obj;
        return this.age == p.age && this.name.equals(p.name);
    }
}
